package com.jianyi.util;

import com.jianyi.config.ConstConfig;
import com.jianyi.vo.BaseVo;
import com.jianyi.vo.YzmVo;

public class YzmUtil {

	public static BaseVo sendYzm(String cellphone){
		BaseVo baseVo=new BaseVo();
		
		if(StringUtils.isEmpty(cellphone)){
			baseVo.setFlag(false);
			baseVo.setMsg("手机号不能为空！");
		}else{
			if(ValidateKit.isMobile(cellphone)){
				
				YzmVo yzmVo=ConstConfig.map.get(cellphone);
				if(yzmVo==null){
					yzmVo=new YzmVo(cellphone,System.currentTimeMillis()+1000*60*3);
					yzmVo.setSendTime(System.currentTimeMillis());
					ConstConfig.map.put(cellphone, yzmVo);
					SMSUtils.sendSms(getSms(yzmVo.getYzm()), cellphone, "admin");
					baseVo.setFlag(true);
					baseVo.setMsg("发送成功！");
				}else{
					//一分钟之内只能发送一次短信
					if(yzmVo.getSendTime()+1000*60>System.currentTimeMillis()){
						baseVo.setFlag(false);
						baseVo.setMsg("一分钟只能发送一次！");
					}else{
						if(yzmVo.isValid()){
							yzmVo.setSendTime(System.currentTimeMillis());
							ConstConfig.map.put(cellphone, yzmVo);
							SMSUtils.sendSms(getSms(yzmVo.getYzm()), cellphone, "admin");
							baseVo.setFlag(true);
							baseVo.setMsg("发送成功！");
						}else{
							yzmVo=new YzmVo(cellphone,System.currentTimeMillis()+1000*60*3);
							yzmVo.setSendTime(System.currentTimeMillis());
							ConstConfig.map.put(cellphone, yzmVo);
							SMSUtils.sendSms(getSms(yzmVo.getYzm()), cellphone, "admin");
							baseVo.setFlag(true);
							baseVo.setMsg("发送成功！");
						}
					}
				}
				
			}else{
				baseVo.setFlag(false);
				baseVo.setMsg("手机号码格式错误！！");
			}
		}
		return baseVo;
	}
	
	
	private static String getSms(String code){
		String sms="【精准医疗服务】您的验证码是#code#。如非本人操作，请忽略本短信";
		return sms.replace("#code#", code);
	}
	
	public static boolean isValid(String cellphone,String smsyzm){
		YzmVo yzmVo=ConstConfig.map.get(cellphone);
		if(yzmVo!=null){
			if(smsyzm.equals(yzmVo.getYzm())){
				return true;
			}
		}
		return false;
	}
}
